package co.baiku.boot.v3.request;

import co.baiku.boot.v3.model.*;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.List;

/**
 * 完结支付分订单API
 * <pre>
 * 完结微信支付分订单。用户使用服务完成后，商户可通过此接口完结订单。
 * 前置条件：用户确认订单成功后
 * </pre>
 *
 * @see <a href='https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore/chapter3_5.shtml'>官方文档</a>
 */
public class WeixinPayScoreCompleteOrderRequest extends WeixinPayScoreRequest {
    /**
     * [必填] 后付费项目
     * <p>后付费项目列表，最多包含100条付费项目。
     * 如果传入，用户侧则显示此参数。
     * </p>
     */
    @JsonProperty("post_payments")
    private List<WeixinPayScorePostPayment> postPayments;
    /**
     * 后付费商户优惠
     * <p>
     * 后付费商户优惠列表，最多包含30条商户优惠。
     * 如果传入，用户侧则显示此参数。
     * </p>
     */
    @JsonProperty("post_discounts")
    private List<WeixinPayScorePostDiscounts> postDiscounts;
    /**
     * 服务时间段
     * <pre>
     *  服务时间范围，创建订单未填写服务结束时间，则完结的时候，服务结束时间必填
     * 如果传入，用户侧则显示此参数。
     * </pre>>
     */
    @JsonProperty("time_range")
    private WeixinPayScoreTimeRange timeRange;
    /**
     * 服务位置信息
     * 如果传入，用户侧则显示此参数。
     */
    private WeixinPayScoreLocation location;
    /**
     * 总金额
     * <pre>
     * 1、金额：数字，必须≥0（单位：分），只能为整数，详见支付金额。
     * 2、总金额 =（完结付费项目1…+完结付费项目n）-（完结商户优惠项目1…+完结商户优惠项目n）
     * 3、总金额上限
     *   1）【评估不通过：交押金】模式：总金额≤创单时填写的“订单风险金额”
     *   2）【评估不通过：拒绝】模式：总金额≤“每个服务ID的风险金额上限”
     * 示例值：50000
     * </pre>
     */
    @JsonProperty("total_amount")
    private Integer totalAmount;
    /**
     * 微信支付服务分账标记
     * <pre>
     * 完结订单分账接口标记，false-不分账，true-分账。默认：false
     * 示例值：false
     * </pre>
     */
    @JsonProperty("profit_sharing")
    private Boolean profitSharing;
    /**
     * 订单优惠标记
     * <pre>
     * 订单优惠标记，代金券或立减金优惠的参数，说明详见代金券或立减金优惠
     * 示例值：goods_tag
     * </pre>
     */
    @JsonProperty("goods_tag")
    private String goodsTag;

    public WeixinPayScoreTimeRange getTimeRange() {
        return timeRange;
    }

    public void setTimeRange(WeixinPayScoreTimeRange timeRange) {
        this.timeRange = timeRange;
    }

    public WeixinPayScoreLocation getLocation() {
        return location;
    }

    public void setLocation(WeixinPayScoreLocation location) {
        this.location = location;
    }

    public Boolean getProfitSharing() {
        return profitSharing;
    }

    public void setProfitSharing(Boolean profitSharing) {
        this.profitSharing = profitSharing;
    }

    public String getGoodsTag() {
        return goodsTag;
    }

    public void setGoodsTag(String goodsTag) {
        this.goodsTag = goodsTag;
    }

    public List<WeixinPayScorePostPayment> getPostPayments() {
        return postPayments;
    }

    public void setPostPayments(List<WeixinPayScorePostPayment> postPayments) {
        this.postPayments = postPayments;
    }

    public List<WeixinPayScorePostDiscounts> getPostDiscounts() {
        return postDiscounts;
    }

    public void setPostDiscounts(List<WeixinPayScorePostDiscounts> postDiscounts) {
        this.postDiscounts = postDiscounts;
    }

    public Integer getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(Integer totalAmount) {
        this.totalAmount = totalAmount;
    }
}
